home *** CD-ROM | disk | FTP | other *** search
/ DS-CD ROM 2 1993 August / DS CD-ROM 2.Ausgabe (August 1993).iso / programm / ds0073 / bsp2.pas < prev    next >
Pascal/Delphi Source File  |  1991-01-19  |  4KB  |  93 lines

  1. PROGRAM Beispiel_2;     (* Direktes Einbinden der Sprites *)
  2.                         (* in das Programm.               *)
  3.                         (* Der Code wird zwar länger, das *)
  4.                         (* Programm aber auch schneller;  *)
  5.                         (* vor allem aber benötigt es dann*)
  6.                         (* keine externen Dateien mehr.   *)
  7.  
  8. uses crt,dos,graph;
  9.  
  10. VAR gd,gm,x,y,i : integer;
  11.     s1,s2,s3,s4 : word;        (* Größe der Sprites *)
  12.     p1,p2,p3,p4 : pointer;     (* Pointer-Variablen für die Sprites *)
  13.  
  14. CONST pos1 : Array [1..4] of pointtype =
  15.              ((x:20; y:237),(x:40; y:237),(x:40; y:180),(x:20; y:185));
  16.              (* Die Koordinaten des "Tors" *)
  17.  
  18. (* Zunächst müßen aus den gespeicherten Sprites (Endung .SPR) Objekt- *)
  19. (* Dateien (Endung .OBJ) gemacht werden.                              *)
  20. (* Dies geschieht durch Aufruf des mit Turbo Pascal mitgelieferten    *)
  21. (* Hilfsprogramms BINOBJ.EXE.                                         *)
  22. (* Lesen Sie zum Gebrauch am besten das Turbo-Handbuch                *)
  23. (* Hier wurden die Objekt-Dateien erzeugt mit dem Befehl              *)
  24. (*             "binobj bild1.spr bild1.obj bild1"   usw..             *)
  25.  
  26. PROCEDURE Bild1; External; {$L bild1.obj}       (* Einbinden der OBJ- *)
  27. PROCEDURE Bild2; External; {$L bild2.obj}       (* Dateien in das     *)
  28. PROCEDURE Bild3; External; {$L bild3.obj}       (* Programm.          *)
  29. PROCEDURE Ball;  External; {$L ball.obj}
  30.  
  31. BEGIN
  32.   gd := detect;  initgraph (gd,gm,getenv('bgipfad'));
  33.   (* statt gentenv... muß hier der Pfad zu dem Verzeichnis stehen, in dem   *)
  34.   (* sich Ihre BGI-Dateien befinden. Oder Sie lösen das so wie ich;         *)
  35.   (* ich habe den Pfad zu meinen BGI- und CHR-Dateien in einer Environment- *)
  36.   (* Variablen mit Namen BGIPFAD gesetzt (das bedeutet: in die Autoexec.bat *)
  37.   (* Datei kommt der Befehl "set bgipfad=C:\PASCAL\BGI", wobei natürlich    *)
  38.   (* das richtige Verzeichnis angegeben werden muß). Diese Variable kann    *)
  39.   (* man dann bequem mit Getenv('bgipfad') im Programm abfragen.            *)
  40.   (* Dies geht allerdings erst ab Turbo Pascal 5.0...                       *)
  41.  
  42.   p1 := addr(bild1);   (* Die Adressen der extern eingebundenen *)
  43.   p2 := addr(bild2);   (* Sprites werden den Pointer-Variablen  *)
  44.   p3 := addr(bild3);   (* zugewiesen.                           *)
  45.   p4 := addr(ball);
  46.  
  47.   (*    Von hier ab gehts gleich, wie in BSP1.PAS    *)
  48.  
  49.   clearviewport;
  50.   line (0,237,getmaxx,237);       (* ein bißchen Verzierung... *)
  51.   setfillstyle (8,white);
  52.   fillpoly (4,pos1);
  53.   settextjustify (centertext,centertext);
  54.   outtextxy (getmaxx div 2,50,'Beispiel 2 : Sprites im Code eingebunden');
  55.   x := 600; y := 200;
  56.   putimage (260,228,p4^,xorput);  (* Ball ausgeben *)
  57.  
  58.   For i := 1 to 21 do             (* Der Spieler nimmt Anlauf... *)
  59.   BEGIN
  60.     putimage (x,y,p1^,xorput);    (* erst Bild ausgeben... *)
  61.     delay (100-2*i);              (* warten...             *)
  62.     putimage (x,y,p1^,xorput);    (* und wieder löschen.   *)
  63.     dec (x,4);
  64.     putimage (x,y,p2^,xorput);    (* und jetzt dasselbe nochmal *)
  65.     delay (100-2*i);
  66.     putimage (x,y,p2^,xorput);
  67.     dec (x,4);
  68.     putimage (x,y,p1^,xorput);
  69.     delay (100-2*i);
  70.     putimage (x,y,p1^,xorput);
  71.     dec (x,4);
  72.     putimage (x,y,p3^,xorput);
  73.     delay (100-2*i);
  74.     putimage (x,y,p3^,xorput);
  75.     dec (x,4);
  76.   END;
  77.   putimage (x,y,p3^,xorput);
  78.   y := 228;
  79.   putimage (260,228,p4^,xorput);    (* Ball löschen *)
  80.   While x > 30 do
  81.   BEGIN
  82.     putimage (x,y,p4^,xorput);      (* und jetzt bewegen *)
  83.     delay ((300 - x) div 4);
  84.     putimage (x,y,p4^,xorput);
  85.     dec(x,4);
  86.   END;
  87.   outtextxy (getmaxx div 2,280,'Bitte Taste drücken...');
  88.   Repeat Until keypressed;
  89.   closegraph;
  90. END.
  91.  
  92.  
  93.